package fr.kptn.api.readability.structs.reader;

import java.util.Date;

import com.google.gson.annotations.SerializedName;

public class Article {

	/**
	 * Domain (in the URI sense) of the article
	 */
	private String domain;
	
	/**
	 * Href to the page next to this article
	 */
	@SerializedName("next_page_href")
	private String nextPageHref;
	
	/**
	 * Title of the article
	 */
	private String title;
	
	/**
	 * full URL to the article
	 */
	private String url;
	
	/**
	 * URL to the lead image for the article
	 */
	@SerializedName("lead_image_url")
	private String leadImageUrl;
	
	/**
	 * Author of the article
	 */
	private String author;
	
	/**
	 * Size of the content (in bytes)
	 */
	@SerializedName("content_size")
	private Long contentSize;
	
	/**
	 * Content of the article
	 */
	private String content;
	
	/**
	 * Short excerpt of the article
	 */
	private String excerpt;
	
	/**
	 * Direction of the text in the article (ltr for left to right texts or rtl for right to left texts)
	 */
	private String direction;
	
	/**
	 * Count of the article's words
	 */
	@SerializedName("word_count")
	private Long wordsCount;
	
	/**
	 * Date on which the article has been published
	 */
	@SerializedName("date_published")
	private Date publishedDate;
	
	/**
	 * Quick teaser on the article 
	 */
	private String dek;
	
	/**
	 * Whether Readability processing has been done on this article
	 */
	private boolean processed;
	
	/**
	 * Short URL of the article if this article has had his URL shortened
	 */
	@SerializedName("short_url")
	private String shortUrl;
	
	/**
	 * Identifier of the article
	 */
	private String id;
	
	/**
	 * Default constructor
	 */
	public Article() {
	}

	/******************** GETTERS AND SETTERS ********************/
	
	/**
	 * @return the domain
	 */
	public String getDomain() {
		return domain;
	}

	/**
	 * @param domain the domain to set
	 */
	public void setDomain(String domain) {
		this.domain = domain;
	}

	/**
	 * @return the title
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * @param title the title to set
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * @return the url
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * @param url the url to set
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * @return the leadImageUrl
	 */
	public String getLeadImageUrl() {
		return leadImageUrl;
	}

	/**
	 * @param leadImageUrl the leadImageUrl to set
	 */
	public void setLeadImageUrl(String leadImageUrl) {
		this.leadImageUrl = leadImageUrl;
	}

	/**
	 * @return the author
	 */
	public String getAuthor() {
		return author;
	}

	/**
	 * @param author the author to set
	 */
	public void setAuthor(String author) {
		this.author = author;
	}

	/**
	 * @return the excerpt
	 */
	public String getExcerpt() {
		return excerpt;
	}

	/**
	 * @param excerpt the excerpt to set
	 */
	public void setExcerpt(String excerpt) {
		this.excerpt = excerpt;
	}

	/**
	 * @return the direction
	 */
	public String getDirection() {
		return direction;
	}

	/**
	 * @param direction the direction to set
	 */
	public void setDirection(String direction) {
		this.direction = direction;
	}

	/**
	 * @return the wordsCount
	 */
	public Long getWordsCount() {
		return wordsCount;
	}

	/**
	 * @param wordsCount the wordsCount to set
	 */
	public void setWordsCount(Long wordsCount) {
		this.wordsCount = wordsCount;
	}

	/**
	 * @return the publishedDate
	 */
	public Date getPublishedDate() {
		return publishedDate;
	}

	/**
	 * @param publishedDate the publishedDate to set
	 */
	public void setPublishedDate(Date publishedDate) {
		this.publishedDate = publishedDate;
	}

	/**
	 * @return the dek
	 */
	public String getDek() {
		return dek;
	}

	/**
	 * @param dek the dek to set
	 */
	public void setDek(String dek) {
		this.dek = dek;
	}

	/**
	 * @return the processed
	 */
	public boolean isProcessed() {
		return processed;
	}

	/**
	 * @param processed the processed to set
	 */
	public void setProcessed(boolean processed) {
		this.processed = processed;
	}

	/**
	 * @return the id
	 */
	public String getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * @return the nextPageHref
	 */
	public String getNextPageHref() {
		return nextPageHref;
	}

	/**
	 * @param nextPageHref the nextPageHref to set
	 */
	public void setNextPageHref(String nextPageHref) {
		this.nextPageHref = nextPageHref;
	}

	/**
	 * @return the contentSize
	 */
	public Long getContentSize() {
		return contentSize;
	}

	/**
	 * @param contentSize the contentSize to set
	 */
	public void setContentSize(Long contentSize) {
		this.contentSize = contentSize;
	}

	/**
	 * @return the content
	 */
	public String getContent() {
		return content;
	}

	/**
	 * @param content the content to set
	 */
	public void setContent(String content) {
		this.content = content;
	}

	/**
	 * @return the shortUrl
	 */
	public String getShortUrl() {
		return shortUrl;
	}

	/**
	 * @param shortUrl the shortUrl to set
	 */
	public void setShortUrl(String shortUrl) {
		this.shortUrl = shortUrl;
	}
}
